package com.magist.manage.copyrights.service;

import com.github.pagehelper.PageInfo;
import com.magist.core.entity.Page;
import com.magist.core.entity.ResultMessage;
import com.magist.core.service.BaseService;
import com.magist.manage.copyrights.dto.CopyrightsDto;
import com.magist.manage.copyrights.entity.Copyrights;
import tk.mybatis.mapper.entity.Example;

import java.util.List;

public interface CopyrightsService extends BaseService<Copyrights>{

    /**
     * 分页方法
     * @param example
     * @param page
     * @return
     */
    PageInfo<Copyrights> page(Example example, Page page);

    /**
     * 添加授权
     * @param copyrightsDto
     */
    void addCopyRights(CopyrightsDto copyrightsDto);

    int updateCopyrights(CopyrightsDto copyrightsDto);

    /**
     * 通过合同id失效
     * @param contractId
     */
    void doInvalidByContractId(String contractId);

    /**
     * 通过合同编号查询
     * @param contractNo
     * @return
     */
    List<Copyrights> findByContractNo(String contractNo);

    /**
     * 失效单个合同
     * @param id
     * @return
     */
    int doInvalidCopyrights(String id);

    /**
     * 通过唯一版权编号查询
     * @param copyrightsNo
     * @return
     */
    Copyrights findByCopyrightsNo(String copyrightsNo);

    /**
     * 批量导入
     * @param copyrightsDtos
     */
    void doBatchAdd(List<CopyrightsDto> copyrightsDtos);

    /**
     * 通过作品名和合同编号
     * @param worksName
     * @param contractNo
     * @return
     */
    public Copyrights findByWorksNameAndContractNo(String worksName,String contractNo);

    /**
     * 通过合同号和状态查询
     * @param contractNo
     * @param status
     * @return
     */
    List<Copyrights> findByContractNoAndStatus(String contractNo, String status);


    /**
     * 查询即将过期的版权
     * @param month 月数
     * @return
     */
    List<Copyrights> findNearlyExpire(int month);

    List<Copyrights> findByCreateById(String userId);

    /**
     * 判断版权是否即将过期
     * @param copyrightsNo
     * @return
     */
    ResultMessage checkCopyrightsDate(String copyrightsNo);
}